package GameServer;

import Library.Game.*;
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;

/**
 * Klasse GameInfo bevat informatie over een bepaalde Game.
 * Dit is een beperkte variant van Game.
 */
public class GameInfo extends UnicastRemoteObject implements IGameInfo
{
    /**
     *
     */
    protected transient Game m_Game;
    
    /**
     * Constructor maakt een nieuwe gameinfo aan.
     * @param game game
     * @throws RemoteException
     */
    public GameInfo(Game game) throws RemoteException
    {
        m_Game = game;
    }
    
    /**
     * Geeft de naam van de game terug
     * @return gamename
     * @throws RemoteException
     */
    public String getName() throws RemoteException
    {
        return m_Game.getName();
    }

    /**
     * Geeft het aantal spelers terug.
     * @return aantal spelers
     * @throws RemoteException
     * @throws Exception
     */
    public int getPlayers() throws RemoteException, Exception
    {
        return m_Game.getPlayers().size();
    }

    /**
     * Geeft het maximum aantal spelers terug.
     * @return maximum aantal spelers
     * @throws RemoteException
     */
    public int getMaxPlayers() throws RemoteException
    {
        return m_Game.getMaxPlayers();
    }
    
    /**
     * Geeft een lijst met spelers terug
     * @return lijst met spelers
     * @throws RemoteException
     * @throws Exception
     */
     public List<IPlayer> getPlayerList() throws RemoteException, Exception
     {
        return m_Game.getPlayers();
     }
     
     /**
      *
      * @return
      * @throws RemoteException
      * @throws Exception
      */
     public int getState() throws RemoteException, Exception
     {
         return m_Game.getState();
     }
     
     /**
      * //TODO: javadoc
      * @return 
      */
     public int getGameTime()
     {
         return m_Game.getGameTime();
     }
     
     /**
      * //TODO: javadoc
      * @return 
      */
     public int getTurnTime()
     {
         return m_Game.getTurnTime();
     }
     
     public String getGameWinner()
     {
         return m_Game.getGameWinner();
     }
}
